#ifndef CharacterVocation_H_
#define CharacterVocation_H_

#include <iostream>
#include <string>
#define MAJOR_MAX_PER 2
#define WEAPON_MAX_PER 2
#define AMOUR_MAX_PER 1
#define WEAPON_TYPE_NUM 5+1
#define ARMOUR_TYPE_NUM 4+1
#define VOCATION_TYPE_NUM 4+1

using std::istream;
using std::ostream;

class Vocation
{
protected:
	typedef std::string string;
	enum VOCATION{ no_vocation,knight, ranger, wizard, mercy };
	enum WEAPON{ no_weapon, Sword, Shield, Dagger, Wand, Shortbow };
	enum ARMOUR{ no_armour, Iron, Leather, Textile };

	static const std::string s_Weapon[];
	static const std::string s_ARMOUR[];
	
private:
	string _vocation;
	string  _major[MAJOR_MAX_PER];
	WEAPON _weapon[WEAPON_MAX_PER];
	ARMOUR _armour;

public:	
	Vocation();
	Vocation(string major[MAJOR_MAX_PER], WEAPON weapon[WEAPON_MAX_PER], ARMOUR armour);
	Vocation(const Vocation & Voc);	//copy construction
	virtual void DefVocation(const string vocation);
	virtual void DefMajor(const string major[]);
	virtual void DefWeapon(const WEAPON weapon[]);
	virtual void DefArmour(const ARMOUR armour);
	virtual void DefOath(const string & oath) = 0;
	void ShowVocation() const;
	//Vocation & operator =(const Vocation & Voc);  // overloaded operator =

	//friend ostream & operator <<(ostream & os, const Vocation & Voc);
	//friend istream & operator >> (istream & is, const Vocation & Voc);

	virtual ~Vocation();
};





#endif